package demo.SmartHomePlatformDamo;

import java.util.Scanner;

/**
 * 模拟智能家居系统，用户可以选择要控制的设备，并可以对他们进行打开和关闭操作。
 *
 * Version: 1.0
 * Author: 瓶子
 */
public class Test {
    public static void main( String[] args ) {
        // 设计思路：面向对象编程
        // 角色：设备（灯、空调、电灯泡、电水壶， 电视机，洗衣机...）
        // 具备功能：开、关
        // 智能系统控制（唯一）
        // 1、定义设备类，创建设备对象代表设备。
        // 2、准备对象，放进数组，代表全家设备。
        HomeAppliances[] homeAppliances = new HomeAppliances[4];
        homeAppliances[0] = new Lamp( "灯" , false);
        homeAppliances[1] = new WashingMachine( "洗衣机" , false);
        homeAppliances[2] = new TV( "电视机" , false);
        homeAppliances[3] = new Air( "空调" , false);

        //3、为设备定制开关功能，使用接口，由父类实现，子类继承父类后可以公用。
        //4、创建智能控制系统对象，实现对家具的控制。
        SmartHomeControl smartHomeControl = SmartHomeControl.getInstance();
        // 5、控制电器
        // smartHomeControl.control( homeAppliances[0] );

        // 6、提示用户操作，提供全部设备的信息和状态，让用户选择操作谁。
        // 打印全部设备的开关状态
        while ( true ) {
            smartHomeControl.printAllStatus( homeAppliances );
            System.out.println("请选择要控制的设备：");
            System.out.println("0. 退出系统");
            System.out.println("1. 灯");
            System.out.println("2. 洗衣机");
            System.out.println("3. TV");
            System.out.println("4.空调");
            System.out.print("请输入设备编号：");
            Scanner scanner = new Scanner(System.in);
            String command = scanner.next();
            switch ( command ){
                case "1":
                    smartHomeControl.control( homeAppliances[0] );
                    break;
                case "2":
                    smartHomeControl.control( homeAppliances[1] );
                    break;
                case "3":
                    smartHomeControl.control( homeAppliances[2] );
                    break;
                case "4":
                    smartHomeControl.control( homeAppliances[3] );
                    break;
                case "0":
                    System.out.println("退出系统！");
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入错误，请重新输入！");
            }
        }

    }
}
